home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / knowhow4 / kit.cpp < prev    next >
C/C++ Source or Header  |  1994-10-10  |  2KB  |  77 lines

  1. #include "kit.h"
  2.  
  3. Kit::Kit()
  4.     {
  5.      size = DELTA;
  6.      current = used = 0;
  7.      list = (Visible**)malloc((size) * sizeof(Visible*));
  8.      list[0] = 0;
  9.      help_context = 0;
  10.      }
  11. ///////////////////////////
  12. Kit::~Kit()
  13.     {
  14.     delete help_context;
  15.     for(int n = used; n >= 0; n--)             // iterates through container
  16.     {                                      // and tests if pointer is
  17.     if(list[n] != NULL)                    // unique - deletes it
  18.         {
  19.         for(int i = n - 1; i >= 0; i--)
  20.         {
  21.         if(list[n] == list[i])
  22.             list[i] = NULL;
  23.         }
  24.         delete list[n];
  25.         list[n] = NULL;
  26.         }
  27.     }
  28.     delete list;
  29.     }
  30. /////////////////////////////////
  31. void Kit::set_help_context(char* hName)
  32.     {
  33.     delete help_context;
  34.     help_context = strdup(hName);
  35.     }
  36. //////////////////////////////
  37. int Kit::get(Visible* obj)
  38.     {
  39.     for(int i = 0; list[i] != obj; i++)
  40.     ;
  41.     return i;
  42.     }
  43. /////////////////////////////
  44. int Kit::add(Visible* object)
  45.     {
  46.     used++;
  47.     if(size < used)
  48.     list = (Visible**)realloc(list,
  49.                (size += DELTA) * sizeof(Visible*));
  50.     list[current = used] = object;
  51.     return current;
  52.     }
  53. /////////////////////////////
  54. Visible* Kit::remove(int number)
  55.     {
  56.     if(number > used)
  57.     return 0;
  58.     Visible* temp = list[number];
  59.     for(int i = number; i < used; i++)
  60.     list[i] = list[i + 1];
  61.     used--;
  62.     if(size - used > 2 * DELTA)
  63.     list = (Visible**)realloc(list,
  64.         (size -= DELTA) * sizeof(Visible*));
  65.     return temp;
  66.     }
  67. ////////////////////////////////
  68. void Kit::insert(Visible* object, int number)
  69.     {
  70.     used++;
  71.     if(size < used)
  72.     list = (Visible**)realloc(list,
  73.                (size += DELTA) * sizeof(Visible*));
  74.     for(int i = used; i > number; i--)
  75.     list[i] = list[i - 1];
  76.     list[number] = object;
  77.     }